#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
__author__ = "Administrator"
__name__="mtsleep2"
__date__="2016/9/18"
__time__="14:46"
"""
import thread

from time import sleep,ctime

loops = [4,2]

def loop(nloop,nsec,lock):
    print 'start loop', nloop,'at:',ctime()
    sleep(nsec)
    print 'loop',nloop,'done at:',ctime()
    lock.release()

def main():
    print 'start at:',ctime()

    locks = []
    nloops = range(len(loops))

    for i in nloops:
        lock = thread.allocate_lock()
        lock.acquire()
        locks.append(lock)
    for i in nloops:
        thread.start_new_thread(loop,(i,loops[i],locks[i]))
    for i in nloops:
        while locks[i].locked():pass
    print 'all DONE at:',ctime()
if __name__ == '__main__':
    main()

# 使用锁，主线程可以在两个线程都退出后，马上退出，而不用做额外的等待。
'''
不在创建锁的循环里创建线程原因：1，想实现线程的同步，所以要让“所有的马同时冲出栅栏”。2，获取锁要花一些时间，如果线程退出的太快，可能会导致没有获得锁，线程就已经结束了。
'''
